1. Field
The technology relates to integrated circuit fabrication, and more particularly to placement, routing, and optimization of an integrated circuit design that obeys rules that specify the relative placement of circuit elements.
2. Description of Related Art
An integrated circuit design flow typically proceeds through the following stages: product idea, EDA software, tapeout, fabrication equipment, packing/assembly, and chips. The EDA software stage includes the steps shown in the following table:
EDA stepWhat HappensSystem Design- Describe the functionality to implement- What-if planning- Hardware/software architecture partitioningLogic Design and- Write VHDL/Verilog for modules in systemFunctional- Check design for functional accuracy, does theVerificationdesign produce correct outputs?Synthesis and- Translate VHDL/Verilog to netlistDesign for Test- Optimize netlist for target technology- Design and implement tests to permit checking ofthe finished chipDesign Planning- Construct overall floor plan for the chip- Analyze same, timing checks for top-level routingNetlist Verification- Check netlist for compliance with timingconstraints and the VHDL/VerilogPhysical- Placement (positioning circuit elements) andImplement.routing (connecting circuit elements)Analysis and- Verify circuit function at transistor level, allowsExtractionfor what-if refinementPhysical- Various checking functions: manufact., electrical,Verfication (DRC,lithographic, circuit correctnessLRC, LVS)Resolution- Geometric manipulations to improveEnhanc. (OPC,manufacturabilityPSM, Assists)Mask Data- “Tape-out” of data for production of masksPreparationfor lithographic use produce finished chips
With regard to physical implementation technology, methodologies for structured placement offer circuit designers superior power, yield, and/or area for a given logic function. With the advent of manual placement of transistors, designers created arrayed layouts where logic gates were manually placed in a regularized fashion. This methodology has evolved to the point that automation has been applied to the problem. However, regularized placement still suffers from a great deal of manual effort, such as in cell drive strength selection.
Capturing a priori designer knowledge of structured placement requirements in HDL is a nontrivial problem. Even if captured, structured placement requirements are lost during standard cell random placement. Standard cell placers tend to take more localized views during optimization. This results in not just loss of regularity, but also extra buffering, routing, vias, and cell oversizing, compared to a solution which might be obtained following structured placement.
One approach to this problem is to perform cell sizing and optimization of a structured placement manually through homegrown tools. This approach is quite expensive in terms of engineering effort. This approach is also hard to integrate with the rest of the design. Such integration requires multiple iterations, because standard cell placement and optimization changes the placement, sizing, etc. of the surrounding, non-structured logic. Unfortunately, this triggers another iteration, with further manual sizing and optimization efforts through the homegrown tools for the block with structured placement.
Other approaches to this problem are to generate structured placement through synthesis or through a specific tool, and then pass on the result to a placer through a set of special constraints, or as a macro/IP block. The initial structure generated through synthesis or through the special tool is problematic. Because the initial structure is generated prior to placement, the initial structure is formed lacking complete placement knowledge, and thus the initial structure fails to lead to optimal placement as generation. Also if it is passed as a macro/IP block, then place and route tools cannot resize or otherwise optimize the blocks.
Relative placement rules specified at the netlist-level are specific to a netlist, as such rules are tied to the instance names of the cells in the netlist. Accordingly, every time a new netlist is synthesized (which has different instance names even thought the designs may be functionally identical), the prior relative placement constraints are invalidated and need to be rewritten referencing new cell instance names. This process is not easily repeatable. Also, writing the relative placement constraints at the cell instance level is a very detailed and tedious task.
Therefore, it would be desirable to efficiently implement structured placement with circuit design.